package com.example.springstudyroot.TestSPI;


import sun.misc.Service;

import java.util.Iterator;
import java.util.ServiceLoader;

public class TestMain {
    public static void main(String[] args) {
        //两种获取具体服务的方式
        /**
         * 第一步，在resource包下面建META-INF/services文件夹
         * 第二部，在services包下面建一个文件，这个文件必须和要实现的接口类路径相同，
         * 第三步，在文件中写入调用的类的类路径
         */

        //方案1.使用java.misc.Service类的Service.providers(接口.class)
        Iterator<SpiServiceInteferce> providers = Service.providers(SpiServiceInteferce.class);
        while (providers.hasNext() ) {
            SpiServiceInteferce impl = providers.next();
            impl.test();
        }

        //方案2.使用java.util.ServiceLoader类的ServiceLoader.load()
        ServiceLoader<SpiServiceInteferce> load = ServiceLoader.load(SpiServiceInteferce.class);
        Iterator<SpiServiceInteferce> iterator = load.iterator();
        while (iterator.hasNext()) {
            SpiServiceInteferce impl = iterator.next();
            impl.test();
        }
    }
}
